草庐IT

helm cm-push

全部标签

C++:push_back(new Object()) 是内存泄漏吗?

以下C++代码是否存在内存泄漏?list.push_back(newString("hi"));据我了解,任何std集合/容器中的push_back总是会制作拷贝。因此,如果复制了新字符串,则没有什么可以删除新字符串,对吧?因为push_back之后没有引用它...我是对还是错?谢谢。Jbu编辑:我想我错了,因为new将返回一个指针......我们将始终拥有能够删除新字符串的指针 最佳答案 是的,但不是你想的那样。取决于如何list已定义并初始化,push_back可能会抛出异常。如果是,则从new返回的指针迷失了,永远无法解脱。但

c++ - 带有 std::make_unique 的 push_back 或 emplace_back

基于these中的答案questionshere,我知道使用c++14的std::make_unique肯定比直接emplace_back(newX)更可取。也就是说,是不是更喜欢打电话my_vector.push_back(std::make_unique("constructor","args"));或my_vector.emplace_back(std::make_unique("constructor","args"));也就是说,在添加由std::make_uniquestd::unique_ptr时,我应该使用push_back还是emplace_back/?====编辑=

C++11 vector push_back 不明确

考虑以下代码:#includestructS{inta;doubleb;};intmain(){std::vectorv;v.push_back({3,4.5});}g++4.4提示对push_back()的调用不明确:error:callofoverloaded‘push_back()’isambiguousnote:candidatesare:voidstd::vector::push_back(const_Tp&)[with_Tp=S,_Alloc=std::allocator]note:voidstd::vector::push_back(_Tp&&)[with_Tp=S,_A

c++11 emplace_back 和 push_back 语法与结构

我正在使用MSVC,VisualStudio2013。假设我有一个结构:structmy_pair{intfoo,bar;};我想有效地添加一堆这些,而不是创建一个临时然后丢弃它:vectorv;v.push_back(41,42);//doesnotwork[a]v.push_back({41,42});//works[b]v.emplace_back(41,42);//doesnotwork[c]v.emplace_back({41,42});//doesnotwork[d]v.emplace_back(my_pair{41,42});//works[e]现在,如果我在代码中添加构

c++ - std::forward_list 和 std::forward_list::push_back

我想使用std::forward_list因为:Forwardlistisacontainerwhichsupportsfastinsertionandremovalofelementsfromanywherefromthecontainer但是没有*std::forward_list::push_back*实现。是否有一种高性能的方式来添加对单或无理由的支持? 最佳答案 我建议反对std::forward_list就像我在几乎所有情况下反对std::list一样。就个人而言,我从来没有在我的代码中发现链表是最好的数据结构。在C++

c++ - 为什么 std::list 上的 push_back 会更改用 rbegin 初始化的反向迭代器?

根据我发现的一些STL文档,在std::list中插入或删除元素不会使迭代器无效。这意味着它可以遍历一个列表(从begin()到end()),然后使用push_front添加元素。例如,在下面的代码中,我用元素a、b和c初始化一个列表,然后循环遍历它并执行元素的push_front。结果应该是cbaabc,这正是我得到的:std::listtestList;testList.push_back("a");testList.push_back("b");testList.push_back("c");for(std::list::iteratoritList=testList.begin

python - 在 MongoDB 上使用 $push 更新数组时避免重复值

我想使用Python将一些值推送到数组中。也许下次我更新数组时,它会插入一些存在的值,所以它会得到一些重复的值。我想知道是否有避免重复值。我应该使用db.collection.find()来确定是否应该插入?db.graph.insert_one({"user_id":a.url},)forjina.followers:db.graph.update({"user_id":a.url},{"$push":{"following":j.url}}) 最佳答案 最好的方法是使用$addToSet确保没有重复项添加到集合和$each的运算

python - 在 MongoDB 上使用 $push 更新数组时避免重复值

我想使用Python将一些值推送到数组中。也许下次我更新数组时,它会插入一些存在的值,所以它会得到一些重复的值。我想知道是否有避免重复值。我应该使用db.collection.find()来确定是否应该插入?db.graph.insert_one({"user_id":a.url},)forjina.followers:db.graph.update({"user_id":a.url},{"$push":{"following":j.url}}) 最佳答案 最好的方法是使用$addToSet确保没有重复项添加到集合和$each的运算

c++ - 为什么编译超过100,000行的std::vector::push_back需要很长时间?

我正在编译一个C++库,该库定义了一个从一组数据点中随机采样的函数。数据点存储在std::vector中。有126,272个std::vectorpush_back语句,其中所涉及的vector的类型为double。编译需要很长时间。为什么要花这么长时间?(除了std::vectorpush_back语句外,所有其他代码的编译时间都将少于1秒,因为其他代码很少。) 最佳答案 gcc中有-ftime-report选项,可打印每个编译器阶段浪费的时间的详细报告。我将ubuntu12.0464位和gcc4.6.3一起使用,此代码可重现您的

C++ std::string 追加 vs push_back()

这确实是一个仅出于我自己的兴趣的问题,我无法通过文档确定。我看到http://www.cplusplus.com/reference/string/string/该append具有复杂性:“未指定,但通常在新字符串长度中达到线性。”而push_back()具有复杂性:“未指定;一般为摊销常数,但在新字符串长度上可达线性。”作为一个玩具示例,假设我想将字符“foo”append到字符串中。会myString.push_back('f');myString.push_back('o');myString.push_back('o');和myString.append("foo");完全一样